home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / MiscPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  8KB  |  273 lines

  1. /*
  2. **    $Id: MiscPanel.c,v 1.4 92/04/21 16:59:05 olsen Sta Locker: olsen $
  3. **    $Revision: 1.4 $
  4. **    $Date: 92/04/21 16:59:05 $
  5. **
  6. **    Editing panel for miscellaneous parts of the configuration
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_PRIORITY,GAD_OVERRIDE,GAD_BACKUP,GAD_AUTOUPLOAD,GAD_SETBIT,GAD_MAXBUFFSIZE,
  15.         GAD_BUFFERENABLED,GAD_SHOWFASTMACROS,GAD_USE,GAD_CANCEL };
  16.  
  17. #define WIDTH    344
  18. #define HEIGHT    129
  19.  
  20. STATIC struct Gadget *
  21. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  22. {
  23.     struct Gadget        *Gadget;
  24.     struct NewGadget     NewGadget;
  25.     UWORD             Counter = 0;
  26.  
  27.     memset(&NewGadget,0,sizeof(struct NewGadget));
  28.  
  29.     if(Gadget = CreateContext(GadgetList))
  30.     {
  31.         NewGadget . ng_LeftEdge        = 193;
  32.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  33.         NewGadget . ng_Width        = 140;
  34.         NewGadget . ng_Height        = 10;
  35.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_PROGRAM_PRIORITY_GAD);
  36.         NewGadget . ng_TextAttr        = &DefaultFont;
  37.         NewGadget . ng_GadgetID        = Counter;
  38.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  39.         NewGadget . ng_VisualInfo    = VisualInfo;
  40.  
  41.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  42.             GT_Underscore,        '_',
  43.             GTSL_Min,        -128,
  44.             GTSL_Max,        127,
  45.             GTSL_Level,        Config -> Priority,
  46.             GTSL_MaxLevelLen,    4,
  47.             GTSL_LevelFormat,    "%4ld",
  48.             PGA_Freedom,        LORIENT_HORIZ,
  49.             GA_Immediate,        TRUE,
  50.             GA_RelVerify,        TRUE,
  51.         TAG_DONE);
  52.  
  53.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  54.         NewGadget . ng_Width        = 26;
  55.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD);
  56.         NewGadget . ng_GadgetID        = Counter;
  57.         NewGadget . ng_Height        = 11;
  58.  
  59.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  60.             GTCB_Checked,    Config -> OverridePath,
  61.             GT_Underscore,    '_',
  62.         TAG_DONE);
  63.  
  64.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  65.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD);
  66.         NewGadget . ng_GadgetID        = Counter;
  67.  
  68.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  69.             GTCB_Checked,    Config -> BackupConfig,
  70.             GT_Underscore,    '_',
  71.         TAG_DONE);
  72.  
  73.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  74.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_USE_AUTO_UPLOAD_PANEL_GAD);
  75.         NewGadget . ng_GadgetID        = Counter;
  76.  
  77.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  78.             GTCB_Checked,    Config -> AutoUpload,
  79.             GT_Underscore,    '_',
  80.         TAG_DONE);
  81.  
  82.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  83.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD);
  84.         NewGadget . ng_GadgetID        = Counter;
  85.  
  86.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  87.             GTCB_Checked,    Config -> SetArchivedBit,
  88.             GT_Underscore,    '_',
  89.         TAG_DONE);
  90.  
  91.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  92.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_MAXIMUM_BUFFER_SIZE_GAD);
  93.         NewGadget . ng_GadgetID        = Counter;
  94.         NewGadget . ng_Height        = 14;
  95.         NewGadget . ng_Width        = 140;
  96.  
  97.         GadgetArray[Counter++] = Gadget = CreateGadget(INTEGER_KIND,Gadget,&NewGadget,
  98.             GT_Underscore,    '_',
  99.             GTIN_MaxChars,    8,
  100.             GTIN_Number,    Config -> MaxLogBuffSize,
  101.             GTST_EditHook,    &CommandHook,
  102.             GA_Immediate,    TRUE,
  103.         TAG_DONE);
  104.  
  105.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  106.         NewGadget . ng_Width        = 26;
  107.         NewGadget . ng_Height        = 11;
  108.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_BUFFER_ENABLED_GAD);
  109.         NewGadget . ng_GadgetID        = Counter;
  110.  
  111.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  112.             GTCB_Checked,    Config -> BufferEnabled,
  113.             GT_Underscore,    '_',
  114.         TAG_DONE);
  115.  
  116.         NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  117.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SHOW_FAST_MACROS_GAD);
  118.         NewGadget . ng_GadgetID        = Counter;
  119.  
  120.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  121.             GTCB_Checked,    Config -> OpenFastMacroPanel,
  122.             GT_Underscore,    '_',
  123.         TAG_DONE);
  124.  
  125.         NewGadget . ng_Width        = 88;    /* NEW 52 */
  126.         NewGadget . ng_Height        = 12;
  127.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  128.         NewGadget . ng_GadgetID        = Counter;
  129.         NewGadget . ng_Flags        = 0;
  130.         NewGadget . ng_LeftEdge        = 10;
  131.         NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  132.  
  133.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  134.             GT_Underscore,    '_',
  135.         TAG_DONE);
  136.  
  137.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  138.         NewGadget . ng_GadgetID        = Counter;
  139.         NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  140.  
  141.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  142.             GT_Underscore,    '_',
  143.         TAG_DONE);
  144.     }
  145.  
  146.     return(Gadget);
  147. }
  148.  
  149. VOID
  150. MiscPanel(struct Configuration *Config)
  151. {
  152.     struct Window    *PanelWindow;
  153.     struct Gadget    *GadgetList = NULL;
  154.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  155.  
  156.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  157.  
  158.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  159.     {
  160.         if(PanelWindow = OpenWindowTags(NULL,
  161.             WA_Left,    (Screen -> Width - WIDTH) >> 1,
  162.             WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  163.             WA_Width,    WIDTH,
  164.             WA_Height,    HEIGHT,
  165.  
  166.             WA_Activate,    TRUE,
  167.             WA_DragBar,    TRUE,
  168.             WA_DepthGadget,    TRUE,
  169.             WA_RMBTrap,    TRUE,
  170.             WA_DepthGadget,    TRUE,
  171.             WA_CloseGadget,    TRUE,
  172.             WA_CustomScreen,Screen,
  173.  
  174.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_VANILLAKEY | IDCMP_CLOSEWINDOW | BUTTONIDCMP | CHECKBOXIDCMP | SLIDERIDCMP | INTEGERIDCMP,
  175.  
  176.             WA_Title,    LocaleString(MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT),
  177.         TAG_DONE))
  178.         {
  179.             struct IntuiMessage    *Massage;
  180.             ULONG             Class,Code;
  181.             struct Gadget        *Gadget;
  182.             BYTE             Terminated = FALSE;
  183.  
  184.             PushWindow(PanelWindow);
  185.  
  186.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  187.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  188.             GT_RefreshWindow(PanelWindow,NULL);
  189.  
  190.             ActiveGadget = NULL;
  191.  
  192.             while(!Terminated)
  193.             {
  194.                 WaitPort(PanelWindow -> UserPort);
  195.  
  196.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  197.                 {
  198.                     Class    = Massage -> Class;
  199.                     Code    = Massage -> Code;
  200.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  201.  
  202.                     GT_ReplyIMsg(Massage);
  203.  
  204.                     if(Class == IDCMP_VANILLAKEY)
  205.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  206.  
  207.                     if(Class == IDCMP_GADGETDOWN)
  208.                     {
  209.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  210.                             ActiveGadget = Gadget;
  211.                     }
  212.  
  213.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  214.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  215.  
  216.                     if(Class == IDCMP_CLOSEWINDOW)
  217.                     {
  218.                         Terminated = TRUE;
  219.  
  220.                         Config -> Priority = PrivateConfig . Priority;
  221.                     }
  222.  
  223.                     if(Class == IDCMP_MOUSEMOVE)
  224.                     {
  225.                         if(Gadget -> GadgetID == GAD_PRIORITY)
  226.                             Config -> Priority = (BYTE)Code;
  227.                     }
  228.  
  229.                     if(Class == IDCMP_GADGETUP)
  230.                     {
  231.                         switch(Gadget -> GadgetID)
  232.                         {
  233.                             case GAD_PRIORITY:    Config -> Priority = (BYTE)Code;
  234.                                         break;
  235.  
  236.                             case GAD_USE:        Terminated = TRUE;
  237.  
  238.                                         Config -> OverridePath        = GT_CHECKED(GadgetArray[GAD_OVERRIDE]);
  239.                                         Config -> BackupConfig        = GT_CHECKED(GadgetArray[GAD_BACKUP]);
  240.                                         Config -> AutoUpload        = GT_CHECKED(GadgetArray[GAD_AUTOUPLOAD]);
  241.                                         Config -> SetArchivedBit    = GT_CHECKED(GadgetArray[GAD_SETBIT]);
  242.                                         Config -> BufferEnabled        = GT_CHECKED(GadgetArray[GAD_BUFFERENABLED]);
  243.                                         Config -> OpenFastMacroPanel    = GT_CHECKED(GadgetArray[GAD_SHOWFASTMACROS]);
  244.                                         Config -> MaxLogBuffSize    = GT_INTEGER(GadgetArray[GAD_MAXBUFFSIZE]);
  245.  
  246.                                         if(Config -> MaxLogBuffSize && Config -> MaxLogBuffSize < 2000)
  247.                                             Config -> MaxLogBuffSize = 2000;
  248.  
  249.                                         break;
  250.  
  251.                             case GAD_CANCEL:    Terminated = TRUE;
  252.  
  253.                                         Config -> Priority = PrivateConfig . Priority;
  254.  
  255.                                         break;
  256.  
  257.                             default:        break;
  258.                         }
  259.                     }
  260.                 }
  261.             }
  262.  
  263.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  264.  
  265.             PopWindow();
  266.  
  267.             CloseWindow(PanelWindow);
  268.         }
  269.     }
  270.  
  271.     FreeGadgets(GadgetList);
  272. }
  273.